/*
 * @Author: 王鹏 2911783749@qq.com
 * @Date: 2022-11-08 08:47:37
 * @LastEditors: 王鹏 2911783749@qq.com
 * @LastEditTime: 2022-11-08 09:36:22
 * @FilePath: \vue3Mixiu\code\src\untils\https.ts
 * @Description: 二次封装axios
 */
// 导入axios
import axios from 'axios'
// 引入路由器
import router from '../router/index'
let loading:any;
// 开启loading
function startLoading(){
    // @ts-ignore
    loading = ElLoading.service({
        lock:true,
        text:"拼命加载中....",
        background:"rgba(0,0,0,0.7)"
    })
}

// 关闭loading
function endLoading(){
    loading.close()
}

// 第二步:创建axios实例
const service = axios.create({
    // baseURL:event.prod.baseUrl,
    timeout:50000 //超时时长
})

// 第三步:请求拦截
service.interceptors.request.use((config:any)=>{
    // 在发送请求之前做些什么  验证token之类的
    // console.log("请求的数据",config);
    if(sessionStorage.token){
        config.headers.Authorization=sessionStorage.token
    }
    startLoading()
    return config;
},(error)=>{
    endLoading()
    return Promise.reject(error)
})

// 第四步：响应拦截
service.interceptors.response.use((response)=>{
    endLoading()
    return response
},(error)=>{
    const {status} = error.response
    if(status==401){
        // @ts-ignore
        ElMessage.error('token值已过期,请重新登陆')
        sessionStorage.removeItem('token')
        router.push('/login')
    }
    endLoading()
    // @ts-ignore
    ElMessage.error(error.response.data.msg)
    return Promise.reject(error)
})
export default service